package ar.uade.edu.fain.ad.server.dao.entity;

import java.io.Serializable;
import java.util.Map;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.CollectionOfElements;
import org.hibernate.annotations.MapKey;

@Entity
@Table(name = "ITEM_DEPOSITO")
public class ItemDepositoEntity implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "id")
	@GeneratedValue
	private Long id;

	@ManyToOne
	@JoinColumn(name = "idProducto", nullable = false)
	private ProductoEntity producto;

	@Column
	private Long cantidad;

	@CollectionOfElements
	@JoinTable(name = "ITEM_DEPOSITO_CANTIDAD_VENCIMIENTO", joinColumns = @JoinColumn(name = "idItem"))
	@MapKey(columns = @Column(name = "vencimiento", nullable=false))
	@Column(name = "cantidad")
	private Map<Long, Integer> cantidadPorVencimiento;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public ProductoEntity getProducto() {
		return producto;
	}

	public void setProducto(ProductoEntity producto) {
		this.producto = producto;
	}

	public Long getCantidad() {
		return cantidad;
	}

	public void setCantidad(Long cantidad) {
		this.cantidad = cantidad;
	}

	public Map<Long, Integer> getCantidadPorVencimiento() {
		return cantidadPorVencimiento;
	}

	public void setCantidadPorVencimiento(
			Map<Long, Integer> cantidadPorVencimiento) {
		this.cantidadPorVencimiento = cantidadPorVencimiento;
	}
}
